<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>If...else loogiline operaator. Programmivoo kontrollstruktuurid</title>
    </head>
    <body>
        <?php
            /*
             * Inglise keeles võib netist antud operaatorit leida mitme nime alt.
             * Seda näiteks nagu if statement, if...else statement, if...then statement.
             * 
             * If kontrollstruktuur laseb koodifragmente tingimuslikult käima lasta.
             * 
             * If lause formaat on
             * 
             * if (tingimus)
             * {
             *    käivitatav koodifragment, kui mingi tingimus on täidetud;
             * }
             * 
             * Inglise keeles 
             * 
             * if (expression)
             * {
             *    statement
             * }
             * 
             * If lause tingimus on boolean väärtus. S.t. ta väärtustub kas tõeseks
             * ehk TRUE, või vääraks, ehk FALSE. Siinkohal tuleb tähele panna, et 
             * mõnest andmetüübist boolean tüüpi teisendamisel esineb teatud 
             * eripärasid, millest veel täpsemalt saab lugeda siit:
             * http://php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
             * Mõned eripärad ongi järgnevalt toodud:
             */
             
            var_dump((bool) "");        // boolean(false)
            var_dump((bool) 0);         //boolen(false)
            var_dump((bool) 1);         // boolean(true) 
            //-1 loetakse tõeseks, ehk TRUE'ks, nagu ka iga teist nullist erinevat
            //positiivset ja negatiivset täisarvu!
            var_dump((bool) -1);        // boolean(true)  
            var_dump((bool) -2.55);        // boolean(true)
            var_dump((bool) "suvaline string");     // boolean(true)
            var_dump((bool) 2.3e5);     // boolean(true)
            var_dump((bool) array(12)); // boolean(true)
            var_dump((bool) array());   // boolean(false)
            var_dump((bool) "false");   // boolean(true)
            var_dump((bool) "true");    // boolean(true)
            
            
            /*
             * Toome näite if tingimuslausest. Kui a ei ole b-st suurem, siis 
             * ei tehta midagi. Kui a on b-st suurem, siis trükitakse see fakt
             * brauseris välja. (antud juhul toome näite, kus on tõesti tõene, 
             * et muutuja a väärtus on muutuja b väärtusest suurem)
             */
            $a = 5;
            $b = 3;
            if ($a > $b)
            {
                echo 'a, mille väärtus on ' . $a . ', on b-st, mille väärtus on ' . 
                        $b . ', suurem.';
                echo '<br/>';
            }
            
            /*
             * Meeldetuletuseks, kuidas PHP interpretaatori tüüpide vahel teisendas.
             * Nimelt teisendab interpretaator ka stringikujul arve ning stringides
             * leiduvaid arve vajadusel arvulisteks väärtusteks (muidugi, kui 
             * arvuline väärtus on stringi alguses)
             */
            $c = '4dsdslkds';
            if ($a > $c)
            {
                echo 'a, mille väärtus on ' . $a . ', on c-st, mille väärtus on ' . 
                        (int) $c . ', suurem.';
                echo '<br/>';
            }
            
            //Kui arvuline väärtus on stringi lõpus, siis teisendatakse stringi 
            //väärtus 0-iks, kui sooritatakse arvutamisi. Seetõttu täitub ka järgmine
            //tingimus ning looksulgudes olev käsklus lastakse tööle.
            $d = 'dsdskl4';
            if ($a > $d)
            {
                echo 'a, mille väärtus on ' . $a . ', on d-st, mille väärtus on ' . 
                        (int) $d . ', suurem.';
                echo '<br/>';
            }
            
            /*
             * a ja b omavahelist võrdlemist saab läbi viia ka järgmiste operaatorite
             * abil: 
             * 
             * $a > $b      //$a on suurem, kui $b?
             * $a < $b      //$a on väiksem, kui $b?
             * $a >= $b     //$a on suurem, või võrdne $b-ga?
             * $a <= $b     //$a on väiksem, või võrdne $b-ga?
             * $a == $b     //$a on täpselt võrdne $b-ga? NB!! Kui oleks vaid 
             *              //üks võrdusmärk, siis oleks tegemist omistamisega.
             *              //seetõttu on võrdsuse kontrolliks operaatorina just
             *              //nimelt märgistus ==
             * $a != $b     //$a ei võrdu $b-ga.   ! märk on eituse märk(operaator)!!!
             * 
             * Seega if tingimuslauset kirjutades saaksime kontrollida ka 
             * teisi juhte, lisades programmivoos ühe if tingimuslause teise järel.
             * Ainult see, mis on tõene priditakse brauseris välja.
             */
            if ($a > $b)
            {
                echo '<br/>';
                echo 'a, mille väärtus on ' . $a . ', on b-st, mille väärtus on ' . 
                        $b . ', suurem.';
                echo '<br/>';
            }
            if ($a < $b)
            {
                echo 'a, mille väärtus on ' . $a . ', on b-st, mille väärtus on ' . 
                        $b . ', väiksem.';
                echo '<br/>';
            }
            
            /*
             * Kui meid huvitaks aga vaid üks tingimus, teiste korral tahaksime 
             * teha mingi tüüpkäitumise, siis tuleb appi else lause.
             * Ehk, kui if tingimus, ei täitu, siis täidetakse alati else blokis
             * leitud programmiskript. Näiteks kontrollime, kas muutuja a on muutujast
             * b suurem või väiksem, kui ta ei ole kummatki, siis on nad 
             * võrdsed (kui tegu antud juhul täisarvudega)
             */
             $vordne_arv_muutujaga_a = 5;   
             if ($a > $vordne_arv_muutujaga_a)
            {
                echo '<br/>';
                echo 'a, mille väärtus on ' . $a . ', on $vordne_arv_muutujaga_a-st,
                    mille väärtus on ' . $vordne_arv_muutujaga_a . ', suurem.';
                echo '<br/>';
            }
            else if ($a < $vordne_arv_muutujaga_a)
            {
                echo '<br/>';
                echo 'a, mille väärtus on ' . $a . ', on $vordne_arv_muutujaga_a-st, 
                    mille väärtus on ' . $vordne_arv_muutujaga_a . ', väiksem.';
                echo '<br/>';
            }
            else
            {
                echo '<br/>';
                echo 'Muutuja $a ja muutuja $vordne_arv_muutujaga_a on ilmselt võrdsed';
                echo '<br/>';
            }
        ?>
    </body>
</html>
